package cn.sc.summer.token.util;

import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.fastjson.JSONObject;
import cn.sc.summer.constant.token.TokenConstant;
import cn.sc.summer.redis.util.RedisHelper;
import cn.sc.summer.token.po.UserDetailX;
import cn.sc.summer.token.po.UserTokenInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Objects;

/**
 * 用户工具类
 *
 * @author a-xin
 */
@Slf4j
@Component
public class UserUtil {

    /**
     * 获取登录用户认证信息
     *
     * @param token token信息
     * @return 认证信息
     */
    public static UserTokenInfo getUserTokenInfo(String token) {
        if (CharSequenceUtil.isNotBlank(token) && RedisHelper.hasKey(TokenConstant.ACCESS_TOKEN_PREFIX + token)) {
            return RedisHelper.hmGet(TokenConstant.ACCESS_TOKEN_PREFIX + token, UserTokenInfo.class);
        }
        return null;
    }

    /**
     * 获取登录用户
     *
     * @param token token信息
     * @return 登录用户信息
     */
    public static UserDetailX getLoginUser(String token) {
        if (CharSequenceUtil.isNotBlank(token) && RedisHelper.hasKey(TokenConstant.ACCESS_TOKEN_PREFIX + token)) {
            String userDetailX = Objects.requireNonNull(RedisHelper.hmGet(TokenConstant.ACCESS_TOKEN_PREFIX + token, UserTokenInfo.class)).getUserDetailX();
            return JSONObject.parseObject(userDetailX, UserDetailX.class);
        }
        return null;
    }

}
